﻿#ifndef PARAM_H
#define PARAM_H

#include "math.h"
#include <QDebug>
#include <QDir>
#include <QFile>
#include <QList>
#include <QMap>
#include <QMetaEnum>
#include <QObject>
#include <QSet>
#include <QSettings>
#include <QTextCodec>
class Param : public QObject {
    Q_OBJECT
public:
    static void readParam();
    static void writeParam();
    static void printParam();

    struct IpAndPort  // ip port
    {
        QString ip;
        int     port;
    };

    static int          lower_power;                //电池低电量报警阀值
    static int          fail_charge_time;           //充电失败检测时间 单位s
    static int          fail_charge_soc;            //充电失败检测电量 单位 %
    static int          reset_charge_time;          //充电复位启动时间 单位s
    static int          reset_charge_soc;           //充电复位检测电量 单位 %
    static int          transmit_af_timer;          //物料传入延时
    static int          transmit_ef_timer;          //物料传出延时
    static int          transmit_error_timer;       //卡料检测时间
    static int          transmit_over_timer;        //传输超时时间
    static int          enter_docking_safe_signal;  //进入对接防摔光感是使用，默认关。（0：关闭）（1：打开）
    static int          use_dir_light;              //是否使用转向灯
    static QList< int > manual_mode_obs_switch;     //手动模式遥控需要的避障，0：关闭，1：打开（前、后、左、右）
    static QList< int > manual_mode_obs_are;        //手动模式遥控前后避障需要切换的大小(（前、后)
    static QList< int > check_goods_number;         //上下层花篮检测数量，根据物料光感数目定，如果填0则是不使用该层
    static QList< int > front_and_back_collision;   //前后防撞条使用开关
    static int          close_obs_left;             // UPDATE 2022.10.27 添加左右避障开关
    static int          close_obs_right;            // UPDATE 2022.10.27 添加左右避障开关
    static int          arrive_signal_open_close;   // UPDATE 2022.10.27 添加到位光感屏蔽
    static int          roller_shutter_open_close;  // UPDATE 2022.11.07 卷帘开关

    /*串口*/
    static QString IoControl_port_name;
    static int     IoControl_baud_rate;
    /*IO*/
    struct ioParam {
        int     id          = 0;
        QString key         = "";
        QString str_chinese = "";
        QString str_english = "";
    };
    static QList< ioParam > input_io_hash_table;  //输入IO hash表
    static QList< ioParam > out_io_hash_table;    //输出IO hash表
    static QString          machine_info_search_url;

private:
    explicit Param( QObject* parent = nullptr );
    ~Param();
};

#endif  // PARAM_H
